// 实例化封装的 WxRequest
import WxRequest from './request'
import { getStorage, clearStorage } from './storage'
import { modal, toast } from './expendApi'
import { env } from './env'

const instance = new WxRequest({
  baseUrl: env.baseUrl,
  timeout:3000,
  // isLoading: false, //如果不需要loading
})

instance.interceptors.request = (config) => {
  // 请求发送之前 判断token
  const token = getStorage('token')
  if(token) {
    config.header['token'] = token
  }
  return config
}

instance.interceptors.response = async (response) => {
  // response中包含整合之后的所有内容
  // 从中解构出 isSuccess和服务器返回的data 进行后续判断
  const { isSuccess, data } = response 
  if(!isSuccess) {
    wx.showToast({
      title: '网络异常,请稍后重试~',
    })
    return response
  }

  // 判断服务器响应状态码
  switch(data.code) {
    // 如果后端返回的业务状态码等于 200 说明请求成功
    case 200:
      return data

    // 没有token或token过期
    case 208:
      const res = await modal({
        content:'鉴权失败,请重新登陆',
        showCancel: false
      })
      if(res) {
        //清除失效token 跳转到登录页面 登录
        clearStorage()
        wx.navigateTo({
          url: '/pages/login/login',
        })
      }
      return Promise.reject(response)
    
    default:
      toast({
        title: '程序异常,请联系客服~'
      })
      return Promise.reject(response)
  }

  
}


export default instance



















